package dominioDoProblema;

import java.awt.GridLayout;

import javax.swing.JPanel;

import dominioDaSolucao.Quadrado;

public class MatrizDeQuadrados extends JPanel {

	private static final long serialVersionUID = 1L;
	protected Quadrado[][] area;
	protected int largura;
	protected int altura;

	public MatrizDeQuadrados(int altura, int largura) {
		this.altura = altura;
		this.largura = largura;
		GridLayout gridLayout = new GridLayout(altura, largura);
		setLayout(gridLayout);
		area = new Quadrado[altura][largura];
		for (int x = 0; x < altura; x++) {
			for (int y = 0; y < largura; y++) {
				Quadrado quadrado = new Quadrado(x, y);
				area[x][y] = quadrado;
				add(quadrado);
			}
		}

	}

	public void resetArea() {
		for (int x = 0; x < altura; x++) {
			for (int y = 0; y < largura; y++) {
				area[x][y].resetArea();
			}
		}
	}

	public Quadrado getQuadrado(int x, int y) {
 		if (getDentro(x, y)) {
			return area[x][y];
		} else {
			return new Quadrado(-1, -1);
		}
	}

	public void setQuadrado(int x, int y, Quadrado q) {
		if (getDentro(x, y)) {
			area[x][y] = q;
		}
	}

	public boolean getDentro(int x, int y) {
		boolean dentro = true;
		if (x >= altura || y >= largura || x < 0 || y < 0) {
			dentro = false;
		}
 		return dentro;
	}

	public void preencher(int x, int y, String nomeJogador, int numeroCor, boolean ocupado){
         		getQuadrado(x, y).preencher(nomeJogador, numeroCor, ocupado);
	}
	
	public void resetArea(int x, int y){
 		getQuadrado(x, y).resetArea();
}
	
	public void setOcupado(int x, int y, boolean ocupado) {
		getQuadrado(x, y).setOcupado(ocupado);
	}	
}